﻿Imports System.Data
Imports System.Data.SqlClient
Partial Class Sistema_ModuloEducacion
    Inherits System.Web.UI.Page
    Dim editar As Boolean
    Dim Edad As Integer
    Dim mensaje As String
    Dim Exepcion As String
    Dim NumeroError As Integer
    Public iderespuesta As Integer
    Dim actualizar As Integer

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack = False Then
            If String.IsNullOrEmpty(Request.QueryString.Item("idPersona")) = False Then
                hdIdPersona.Value = Request.QueryString.Item("idPersona")
                hdIdvisita.Value = Request.QueryString.Item("Idvisita")
                hdIdhogar.Value = Request.QueryString.Item("Idhogar")
                EncabezadoModulo1.idPersona = Request.QueryString.Item("idPersona")
                EncabezadoModulo1.idVisita = Request.QueryString.Item("Idvisita")
            End If
            llenarCombos()
            traeredad()

            Using bd As New BdHogaresDataContext
                Dim a = From i In bd.Web_ModuloEducacions
                          Where i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value
                          Select i.idRespuesta

                If a.Count > 0 Then
                    traerDatos(hdIdvisita.Value)
                    'Response.Write("Se ha traido la informacion de la visita actual")
                Else
                    'identificar los datos de la visita anterior
                    Dim c = (From i In bd.Web_ModuloEducacions
                            Where i.idPersona = hdIdPersona.Value
                                Select CType(i.idvisita, Integer?)).Max
                    guardar(True)
                    If IsNothing(c) = False Then
                        traerDatos(c)
                        lblinformacion.Text = "SE HA CARGADO LA INFORMACIÓN DE LA VISITA ANTERIOR A MODO DE VERIFICACIÓN, DEBE MODIFICAR LOS DATOS QUE HAN VARIADO Y HACER CLIC EN GUARDAR"
                    End If
                End If
            End Using

        End If

        Using bd As New BdHogaresDataContext
            Dim a = From i In bd.Web_ModuloEducacions
                      Where i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value
                      Select i.idRespuesta
            If a.Count > 0 Then
                iderespuesta = a.First
            End If
        End Using


        listas()
    End Sub
    Sub traeredad()
        'Using bd As New BdHogaresDataContext
        '    Dim a = From i In bd.Web_Caracterizacionpersonas
        '              Where i.idPersona = hdIdPersona.Value
        '              Select i.edadañoscumplidos
        '    Edad = a.First()
        '    hdEdad.Value = Edad
        'End Using
        'If Edad < 9 Then
        '    rbSabeLeerEscribir.Enabled = False
        'End If
        Dim fechanacimiento As Date
        Dim fechavisita As Date


        Try
            Using bd As New BdHogaresDataContext
                Dim a = From i In bd.Web_Caracterizacionpersonas
                          Where i.idPersona = hdIdPersona.Value
                          Select i.fechadenacimiento
                fechanacimiento = a.First()
            End Using

            Using db As New BdHogaresDataContext
                Dim a = From i In db.Web_Visitas
                        Where (i.idHogar = hdIdhogar.Value And i.idvisita = CInt(hdIdvisita.Value))
                        Select i
                fechavisita = a.FirstOrDefault.FechaDiligenciamiento.ToString
            End Using

        Catch ex As Exception

        End Try

        Dim anios As Integer = DateDiff(DateInterval.Year, fechanacimiento, fechavisita)
        If (fechavisita.Month < fechanacimiento.Month Or (fechavisita.Month = fechanacimiento.Month And fechavisita.Day < fechanacimiento.Day)) Then
            anios -= 1
        End If
        Edad = anios
        hdEdad.Value = Edad
        If Edad < 8 Then
            rbSabeLeerEscribir.Enabled = False
        End If

    End Sub
    Sub llenarCombos()
        Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("CNNdb").ConnectionString)
            cnn.Open()

            LlenarItems(ddnivelformacion, "nivelformacion", cnn)
            LlenarItems(ddgradoactual, "Ultimogradoalcanzado", cnn)
            LlenarItems(TextGradoCursadoActualmente, "Gradocursado", cnn)
            LlenarItems(rbSabeLeerEscribir, "sino", cnn)

            'SAMUEL -- LLENA EL RADIO BUTTON DE RECIBE SUBSIDIO FAMILIAS EN ACCION
            LlenarItems(rbRecibeSubsidioFamiliasAccion, "sino", cnn)
            'FIN SAMUEL

            LlenarItems(rbEstudiaActualmente, "sino", cnn)
            LlenarItems(rbSalaCuna, "sino", cnn)
            LlenarItems(rbPreescolar, "sino", cnn)
            LlenarItems(rbPrimaria, "sino", cnn)
            LlenarItems(rbsecundaria, "sino", cnn)
            LlenarItems(rbMedia, "sino", cnn)
            LlenarItems(rbAlfabetizacion, "sino", cnn)
            LlenarItems(rbUniversidad, "sino", cnn)
            LlenarItems(rbCursoCertificado, "sino", cnn)
            LlenarItems(rbRecibeAlgunCurso, "sino", cnn)
            LlenarItems(cbrazonesnoestudio1, "razonesnoestudio", cnn)
            LlenarItems(cbrazonesnoestudio2, "razonesnoestudio", cnn)
            cnn.Close()

        End Using
    End Sub

    Sub LlenarItems(ByVal objeto As Object, ByVal pregunta As String, ByRef cnn As SqlConnection)
        If pregunta = "sino" Then : objeto.Items.Add(New ListItem("Sí", 1)) : objeto.Items.Add(New ListItem("No", 2)) : Exit Sub : End If
        Using drDatos As SqlDataReader = Funciones.TraerListas(pregunta, cnn)
            With objeto
                .DataSource = drDatos
                .DataTextField = "nombreopcion"
                .DataValueField = "valoropcion"
                .DataBind()
            End With
        End Using
    End Sub
    Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate

        Dim mensaje As New StringBuilder
        If rbEstudiaActualmente.SelectedValue = 1 And TextGradoCursadoActualmente.SelectedIndex = "0" Then
            mensaje.AppendLine("</br>En la pregunta 3 debe ingresar el grado cursado actualmente")
        End If

        If rbEstudiaActualmente.SelectedValue = 1 And TextGradoCursadoActualmenteIE.Text = "" Then
            mensaje.AppendLine("</br>En la pregunta 4 debe ingresar la institución educativa")
        End If




        If rbSabeLeerEscribir.SelectedValue = "2" Then
            If ddnivelformacion.SelectedValue > 3 Then
                mensaje.AppendLine("</br>Si no sabe leer o escribir no puede tener un nivel de formación superior a básica primaria")
            End If

            If ddgradoactual.SelectedValue > 6 Then
                mensaje.AppendLine("</br>Si no sabe leer o escribir no puede tener aprobado un grado superior a primero de básica primaria")
            End If
        End If

        If (ddnivelformacion.SelectedValue > 1) Then
            If (ddgradoactual.SelectedValue < 1) Then
                mensaje.AppendLine("</br>Seleccione el ultimo curso certificado")
            End If
        End If

        If ddgradoactual.SelectedValue <= 17 Then
            If CInt(ddgradoactual.SelectedValue) - 2 >= CInt(TextGradoCursadoActualmente.SelectedValue) And rbEstudiaActualmente.SelectedValue = "1" Then
                mensaje.AppendLine("</br>El último grado certificado no puede ser mayor o igual al  grado cursado actualmente")
            End If
        End If


        If ddgradoactual.SelectedValue > 17 Then
            Response.Write(ddgradoactual.SelectedValue & " " & TextGradoCursadoActualmente.SelectedValue)
            If CInt(ddgradoactual.SelectedValue) >= CInt(TextGradoCursadoActualmente.SelectedValue - 7) And rbEstudiaActualmente.SelectedValue = "1" Then
                mensaje.AppendLine("</br>El último grado certificado no puede ser mayor o igual al  grado cursado actualmente")
            End If


        End If

        If hdEdad.Value >= 16 And hdEdad.Value <= 59 And rbCursoCertificado.SelectedIndex = "-1" Then
            mensaje.AppendLine("</br>Debe responder si tiene curso certificado")
        End If

        If hdEdad.Value >= 16 And hdEdad.Value <= 59 And rbRecibeAlgunCurso.SelectedIndex = "-1" Then
            mensaje.AppendLine("</br>Debe responder si recibe algun curso")
        End If

        Dim contador As Integer
        contador = contador + rbSalaCuna.SelectedIndex + 1
        contador = contador + rbPreescolar.SelectedIndex + 1
        contador = contador + rbPrimaria.SelectedIndex + 1
        contador = contador + rbsecundaria.SelectedIndex + 1
        contador = contador + rbMedia.SelectedIndex + 1
        contador = contador + rbAlfabetizacion.SelectedIndex + 1
        contador = contador + rbUniversidad.SelectedIndex + 1

        If rbEstudiaActualmente.SelectedValue = "1" And contador = 0 Then
            mensaje.AppendLine("</br>Si esta estudiando actualmente debe ingresar en que ciclo educativo esta vinculado")
        End If

        contador = 0
        If rbCursoCertificado.SelectedValue = "1" And txtUltimocursoRealizado.Text = "" Then
            mensaje.AppendLine("</br>Debe ingresar el último curso certificado")
        End If

        If rbCursoCertificado.SelectedValue = "1" And txUltimocursoRealizadoIE.Text = "" Then
            mensaje.AppendLine("</br>Debe ingresar la institución donde realizó el último curso certificado")
        End If


        If rbRecibeAlgunCurso.SelectedValue = "1" And txtNombreCurso.Text = "" Then
            mensaje.AppendLine("</br>Debe ingresar el nombre del curso que recibe")
        End If

        If rbRecibeAlgunCurso.SelectedValue = "1" And txtNombreCursoIE.Text = "" Then
            mensaje.AppendLine("</br>Debe ingresar la institución donde está recibiendo el curso")
        End If




        If rbEstudiaActualmente.SelectedValue = 1 And hdEdad.Value > 15 Then
            If rbRecibeAlgunCurso.SelectedIndex = "-1" Then
                mensaje.AppendLine("</br>Debe responder si recibe algun curso")
            End If
        End If

        If rbEstudiaActualmente.SelectedValue = 2 And hdEdad.Value > 8 Then
            If cbrazonesnoestudio1.SelectedIndex = "-1" Then
                mensaje.AppendLine("</br>Debe ingresar la razón 1 de no estudio")
            End If
        End If


        If rbEstudiaActualmente.SelectedValue = 2 And hdEdad.Value > 8 Then
            If cbrazonesnoestudio2.SelectedIndex = "-1" Then
                mensaje.AppendLine("</br>Debe ingresar la razón 2 de no estudio")
            End If
        End If


        If mensaje.Length > 0 Then
            args.IsValid = False
            Me.CustomValidator1.ErrorMessage = mensaje.ToString()
            Me.CustomValidator1.Enabled = True
        End If

    End Sub


    Sub listas()
        Dim rbl As RadioButtonList
        rbl = CType(rbEstudiaActualmente, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbEstudiaActualmente()") : Next
        rbl = CType(rbSabeLeerEscribir, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbEstudiaActualmente()") : Next

        rbl = CType(rbSalaCuna, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbSalaCuna()") : Next
        rbl = CType(rbPreescolar, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbPreescolar()") : Next
        rbl = CType(rbPrimaria, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbPrimaria()") : Next
        rbl = CType(rbsecundaria, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbsecundaria()") : Next
        rbl = CType(rbMedia, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbMedia()") : Next
        rbl = CType(rbAlfabetizacion, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbAlfabetizacion()") : Next
        rbl = CType(rbUniversidad, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbUniversidad()") : Next
        rbl = CType(rbCursoCertificado, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbCursoCertificado()") : Next
        rbl = CType(rbRecibeAlgunCurso, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbRecibeAlgunCurso()") : Next


        ' rbl = CType(rbCursoCertificado, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbCursoCertificado()") : Next
        ' rbl = CType(rbRecibeAlgunCurso, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbRecibeAlgunCurso()") : Next
        rbl.Dispose()
        rbl = Nothing

        Dim ddl As DropDownList
        'ddl = CType(ddnivelformacion, DropDownList) : For Each li As ListItem In ddl.Items : li.Attributes.Add("onclick", "fddnivelformacion()") : Next
        'ddl.Dispose()
        ddl = Nothing

        Dim cbl As CheckBoxList
        cbl = CType(cbrazonesnoestudio1, CheckBoxList) : For Each li As ListItem In cbl.Items : li.Attributes.Add("onclick", "return fcbrazonesnoestudio(event)") : Next
        cbl = CType(cbrazonesnoestudio2, CheckBoxList) : For Each li As ListItem In cbl.Items : li.Attributes.Add("onclick", "return fcbrazonesnoestudio(event)") : Next
        cbl.Dispose()
        cbl = Nothing

    End Sub

#Region "cargar Datos"

    Sub traerDatos(idvisita As Integer) 'carga los controles con los datos de la bd

        Using bd As New BdHogaresDataContext
            Dim a = From i In bd.Web_ModuloEducacions
                      Where i.idvisita = idvisita And i.idPersona = hdIdPersona.Value
                      Select i
            Dim Datos As New Web_ModuloEducacion
            Datos = a.FirstOrDefault()
            ddnivelformacion.SelectedValue = IIf(IsDBNull(Datos.nivelformacion), 0, Datos.nivelformacion)
            rbEstudiaActualmente.SelectedValue = IIf(IsDBNull(Datos.Estudiaactualmente), 0, Datos.Estudiaactualmente)

            'SAMUEL -- trae los datos del rb de si recibe o no subsidio en familias en accion
            rbRecibeSubsidioFamiliasAccion.SelectedValue = IIf(IsDBNull(Datos.RecibeSubsidioFamiliasAccion), 0, Datos.RecibeSubsidioFamiliasAccion)
            'FIN SAMUEL

            ddgradoactual.SelectedValue = IIf(IsDBNull(Datos.Ultimogradoalcanzado), 0, Datos.Ultimogradoalcanzado)

            txtUltimocursoRealizado.Text = IIf(IsDBNull(Datos.Ultimogradoalcanzado), "", Datos.Ultimogradoalcanzado)
            TextGradoCursadoActualmente.SelectedValue = IIf(IsDBNull(Datos.Gradocursado), 0, Datos.Gradocursado)
            TextGradoCursadoActualmenteIE.Text = IIf(IsDBNull(Datos.IE), "", Datos.IE)
            rbSalaCuna.SelectedValue = IIf(IsDBNull(Datos.EstavinculadosalacunaICBF), 0, Datos.EstavinculadosalacunaICBF)
            rbPreescolar.SelectedValue = IIf(IsDBNull(Datos.EstavinculadoPreescolar), 0, Datos.EstavinculadoPreescolar)
            rbPrimaria.SelectedValue = IIf(IsDBNull(Datos.EstavinculadoBasicaPrimaria), 0, Datos.EstavinculadoBasicaPrimaria)
            rbsecundaria.SelectedValue = IIf(IsDBNull(Datos.EstavinculadoBasicaSecundaria), 0, Datos.EstavinculadoBasicaSecundaria)
            rbMedia.SelectedValue = IIf(IsDBNull(Datos.EstavinculadoMedia), 0, Datos.EstavinculadoMedia)
            rbAlfabetizacion.SelectedValue = IIf(IsDBNull(Datos.EstavinculadoAlfabetizacion), 0, Datos.EstavinculadoAlfabetizacion)
            rbUniversidad.SelectedValue = IIf(IsDBNull(Datos.EstavinculadoTecnicoUniversitario), 0, Datos.EstavinculadoTecnicoUniversitario)
            rbCursoCertificado.SelectedValue = IIf(IsDBNull(Datos.TieneCursoCertificado), 0, Datos.TieneCursoCertificado)
            txtUltimocursoRealizado.Text = IIf(IsDBNull(Datos.UltimoCursoCertificado), "", Datos.UltimoCursoCertificado)
            txUltimocursoRealizadoIE.Text = IIf(IsDBNull(Datos.InstitucionCursoRealizado), "", Datos.InstitucionCursoRealizado)
            rbRecibeAlgunCurso.SelectedValue = IIf(IsDBNull(Datos.RecibeCurso), 0, Datos.RecibeCurso)
            txtNombreCurso.Text = IIf(IsDBNull(Datos.NombreCurso), "", Datos.NombreCurso)
            txtNombreCursoIE.Text = IIf(IsDBNull(Datos.InstitucionCursoActual), "", Datos.InstitucionCursoActual)
            cbrazonesnoestudio1.SelectedValue = IIf(IsDBNull(Datos.RazonesNoEstudio1), 0, Datos.RazonesNoEstudio1)
            cbrazonesnoestudio2.SelectedValue = IIf(IsDBNull(Datos.RazonesNoEstudio2), 0, Datos.RazonesNoEstudio2)
            txtObservaciones.Text = IIf(IsDBNull(Datos.Observaciones), "", Datos.Observaciones)
            rbSabeLeerEscribir.SelectedValue = IIf(IsDBNull(Datos.SabeLeerEscribir), 0, Datos.SabeLeerEscribir)
        End Using

    End Sub
#End Region
#Region "Metodos"
    Sub guardar(ByVal primeravez As Boolean) 'Guarda los datos en la bd
        Dim Datos As New Web_ModuloEducacion

        Datos.nivelformacion = ddnivelformacion.SelectedValue
        Datos.Estudiaactualmente = IIf(rbEstudiaActualmente.SelectedValue = Nothing, 0, rbEstudiaActualmente.SelectedValue)

        'SAMUEL -- Guarda los datos del rb de si recibe o no subsidio en familias en accion
        Datos.RecibeSubsidioFamiliasAccion = IIf(rbRecibeSubsidioFamiliasAccion.SelectedValue = Nothing, 0, rbRecibeSubsidioFamiliasAccion.SelectedValue)
        'FIN SAMUEL

        Datos.Ultimogradoalcanzado = IIf(ddgradoactual.SelectedValue = Nothing, 0, ddgradoactual.SelectedValue)
        Datos.Gradocursado = IIf(TextGradoCursadoActualmente.SelectedValue = Nothing, 0, TextGradoCursadoActualmente.SelectedValue)
        Datos.IE = IIf(TextGradoCursadoActualmenteIE.Text = Nothing, "", TextGradoCursadoActualmenteIE.Text)
        Datos.EstavinculadosalacunaICBF = IIf(rbSalaCuna.SelectedValue = Nothing, 0, rbSalaCuna.SelectedValue)
        Datos.EstavinculadoPreescolar = IIf(rbPreescolar.SelectedValue = Nothing, 0, rbPreescolar.SelectedValue)
        Datos.EstavinculadoBasicaPrimaria = IIf(rbPrimaria.SelectedValue = Nothing, 0, rbPrimaria.SelectedValue)
        Datos.EstavinculadoBasicaSecundaria = IIf(rbsecundaria.SelectedValue = Nothing, 0, rbsecundaria.SelectedValue)
        Datos.EstavinculadoMedia = IIf(rbMedia.SelectedValue = Nothing, 0, rbMedia.SelectedValue)
        Datos.EstavinculadoAlfabetizacion = IIf(rbAlfabetizacion.SelectedValue = Nothing, 0, rbAlfabetizacion.SelectedValue)
        Datos.EstavinculadoTecnicoUniversitario = IIf(rbUniversidad.SelectedValue = Nothing, 0, rbUniversidad.SelectedValue)
        Datos.TieneCursoCertificado = IIf(rbCursoCertificado.SelectedValue = Nothing, 0, rbCursoCertificado.SelectedValue)
        Datos.UltimoCursoCertificado = IIf(txtUltimocursoRealizado.Text = Nothing, "", txtUltimocursoRealizado.Text)
        Datos.InstitucionCursoRealizado = IIf(txUltimocursoRealizadoIE.Text = Nothing, "", txUltimocursoRealizadoIE.Text)
        Datos.RecibeCurso = IIf(rbRecibeAlgunCurso.SelectedValue = Nothing, 0, rbRecibeAlgunCurso.SelectedValue)
        Datos.NombreCurso = IIf(txtNombreCurso.Text = Nothing, "", txtNombreCurso.Text)
        Datos.InstitucionCursoActual = IIf(txtNombreCursoIE.Text = Nothing, "", txtNombreCursoIE.Text)
        Datos.RazonesNoEstudio1 = IIf(cbrazonesnoestudio1.SelectedValue = Nothing, 0, cbrazonesnoestudio1.SelectedValue)
        Datos.RazonesNoEstudio2 = IIf(cbrazonesnoestudio2.SelectedValue = Nothing, 0, cbrazonesnoestudio2.SelectedValue)
        Datos.Observaciones = IIf(txtObservaciones.Text = Nothing, "", txtObservaciones.Text)
        Datos.SabeLeerEscribir = IIf(rbSabeLeerEscribir.SelectedValue = Nothing, 0, rbSabeLeerEscribir.SelectedValue)
        Datos.idPersona = Request.QueryString.Item("idPersona")
        Datos.idvisita = Request.QueryString.Item("idvisita")

        Try
            Using bd As New BdHogaresDataContext
                bd.Web_ModuloEducacions.InsertOnSubmit(Datos)
                bd.SubmitChanges()
                bd.registrarLog(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath)
                iderespuesta = Datos.idRespuesta
            End Using

        Catch ex As Exception
            mensaje = "ERROR"
            Exepcion = ex.Message
        Finally
            If Not IsNothing(mensaje) Then
                Using bd As New bdSeguridadDataContext 'calcula el numero de error que sera asignado al usuario
                    Dim a = (From i In bd.web_Errores Select i.idError).Max
                    NumeroError = a.ToString
                End Using

                Using bd As New BdHogaresDataContext
                    bd.registrarLogError(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath, Exepcion) 'Guarda en la tabla web_errores la exepción
                End Using
                If Not primeravez = True Then
                    contentmsg.InnerHtml = "<script>mostrarmensaje('Error en el registro de los datos','Ha ocurrido un error guardando los datos, por favor pongase en contacto con el administrador del sistema. <br>EL NÚMERO DE SU ERROR ES:" & NumeroError.ToString + 1 & "' ,'error');</script>"
                End If

            Else
                If Not primeravez = True Then
                    contentmsg.InnerHtml = "<script>mostrarmensaje('Registro de datos exitoso','Los datos fueron guardados correctamente<br> <br><br><input id=\'Button1\' type=\'button\' value=\'Regresar\' onclick=\'redireccionar(); />','success');</script>"
                End If
            End If
        End Try
    End Sub

    Sub actualizardatos(ByVal primeravez As Boolean)


        Using bda As New BdHogaresDataContext
            Dim Datos = (From i In bda.Web_ModuloEducacions
            Where (i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value)
                      Select i).Single()
            '            Datos.nivelformacion = IIf(ddnivelformacion.SelectedIndex = "-1", 0, ddnivelformacion.SelectedIndex + 1)
            Datos.nivelformacion = CInt(IIf(ddnivelformacion.SelectedItem.Value = "", "0", ddnivelformacion.SelectedItem.Value))

            'Datos.nivelformacion = IIf(ddnivelformacion.SelectedValue = Nothing, 0, ddnivelformacion.SelectedValue)

            Datos.Estudiaactualmente = rbEstudiaActualmente.SelectedValue

            'SAMUEL -- Guarda los datos del rb de si recibe o no subsidio en familias en accion
            Datos.RecibeSubsidioFamiliasAccion = IIf(rbRecibeSubsidioFamiliasAccion.SelectedIndex = "-1", 0, rbRecibeSubsidioFamiliasAccion.SelectedIndex + 1)
            'FIN SAMUEL

            Datos.Ultimogradoalcanzado = IIf(ddgradoactual.SelectedValue = Nothing, 0, ddgradoactual.SelectedValue)
            Datos.Gradocursado = IIf(TextGradoCursadoActualmente.SelectedValue = Nothing, 0, TextGradoCursadoActualmente.SelectedValue)
            Datos.IE = IIf(TextGradoCursadoActualmenteIE.Text = "", "", TextGradoCursadoActualmenteIE.Text)
            Datos.EstavinculadosalacunaICBF = IIf(rbSalaCuna.SelectedIndex = "-1", 0, rbSalaCuna.SelectedIndex + 1)
            Datos.EstavinculadoPreescolar = IIf(rbPreescolar.SelectedIndex = "-1", 0, rbPreescolar.SelectedIndex + 1)
            Datos.EstavinculadoBasicaPrimaria = IIf(rbPrimaria.SelectedIndex = "-1", 0, rbPrimaria.SelectedIndex + 1)
            Datos.EstavinculadoBasicaSecundaria = IIf(rbsecundaria.SelectedIndex = "-1", 0, rbsecundaria.SelectedIndex + 1)
            Datos.EstavinculadoMedia = IIf(rbMedia.SelectedIndex = "-1", 0, rbMedia.SelectedIndex + 1)
            Datos.EstavinculadoAlfabetizacion = IIf(rbAlfabetizacion.SelectedIndex = "-1", 0, rbAlfabetizacion.SelectedIndex + 1)
            Datos.EstavinculadoTecnicoUniversitario = IIf(rbUniversidad.SelectedIndex = "-1", 0, rbUniversidad.SelectedIndex + 1)
            Datos.TieneCursoCertificado = IIf(rbCursoCertificado.SelectedIndex = "-1", 0, rbCursoCertificado.SelectedIndex + 1)
            Datos.RecibeCurso = IIf(rbRecibeAlgunCurso.SelectedIndex = "-1", 0, rbRecibeAlgunCurso.SelectedIndex + 1)
            Datos.UltimoCursoCertificado = IIf(txtUltimocursoRealizado.Text = Nothing, "", txtUltimocursoRealizado.Text)
            Datos.InstitucionCursoRealizado = IIf(txUltimocursoRealizadoIE.Text = Nothing, "", txUltimocursoRealizadoIE.Text)
            Datos.NombreCurso = IIf(txtNombreCurso.Text = Nothing, "", txtNombreCurso.Text)
            Datos.InstitucionCursoActual = IIf(txtNombreCursoIE.Text = Nothing, "", txtNombreCursoIE.Text)
            Datos.RazonesNoEstudio1 = IIf(cbrazonesnoestudio1.SelectedIndex = "-1", 0, cbrazonesnoestudio1.SelectedIndex + 1)
            Datos.RazonesNoEstudio2 = IIf(cbrazonesnoestudio2.SelectedIndex = "-1", 0, cbrazonesnoestudio2.SelectedIndex + 1)

            Datos.SabeLeerEscribir = IIf(rbSabeLeerEscribir.SelectedIndex = "-1", 0, rbSabeLeerEscribir.SelectedIndex + 1)
            Datos.Observaciones = IIf(txtObservaciones.Text = Nothing, "", txtObservaciones.Text)
            Datos.FechaRegistro = Now()
            Try
                Using bd As New BdHogaresDataContext
                    bda.SubmitChanges()
                    bd.registrarLog(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath)
                End Using

            Catch ex As Exception
                mensaje = "ERROR"
                Exepcion = ex.Message
            Finally
                If Not IsNothing(mensaje) Then
                    Using bd As New bdSeguridadDataContext 'calcula el numero de error que sera asignado al usuario
                        Dim a = (From i In bd.web_Errores Select i.idError).Max
                        NumeroError = a.ToString
                    End Using

                    Using bd As New BdHogaresDataContext
                        bd.registrarLogError(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath, Exepcion) 'Guarda en la tabla web_errores la exepción
                    End Using
                    If Not primeravez = True Then

                        contentmsg.InnerHtml = "<script>mostrarmensaje('Error en el registro de los datos','Ha ocurrido un error guardando los datos, por favor pongase en contacto con el administrador del sistema. <br>EL NÚMERO DE SU ERROR ES:" & NumeroError.ToString + 1 & "' ,'error');</script>"
                    End If

                Else
                    If Not primeravez = True Then
                        Response.Write("<script>alert('Los datos se han guardado de manera exitosa');</script>")
                        Response.Write("<script>var pagina = 'PersonasConsulta.aspx?idPersona=" & hdIdPersona.Value & "&idhogar=" & hdIdhogar.Value & "';window.location = pagina;</script>")


                        'contentmsg.InnerHtml = "<script>mostrarmensaje('Registro de datos exitoso','Los datos fueron guardados correctamente<br> <br><br><input id=\'Button1\' type=\'button\' value=\'Regresar\' onclick=\'redireccionar(); />','success');</script>"
                    End If
                End If
            End Try


        End Using


    End Sub


#End Region
#Region "Enventos controles"


    Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Response.Redirect("PersonasConsulta.aspx?idPersona=" & hdIdPersona.Value & "&idhogar=" & hdIdhogar.Value)
    End Sub

    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If Page.IsValid = False Then
            Response.Write("<script>alert('Datos incompletos.')</script>")
            Exit Sub
        Else
            actualizardatos(False)
        End If
    End Sub
#End Region

    Protected Sub ddnivelformacion_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddnivelformacion.SelectedIndexChanged

        Dim a As Integer = CInt(If(String.IsNullOrEmpty(ddnivelformacion.SelectedValue), "1", ddnivelformacion.SelectedValue))
        ddgradoactual.Enabled = False
        ddgradoactual.Items.Clear()
        Dim lc As New ListItemCollection
        lc = cagarSubItems(a)
        For Each d As ListItem In lc
            ddgradoactual.Items.Add(d)
        Next
        If a > 1 Then
            ddgradoactual.Enabled = True
        Else
            ddgradoactual.Enabled = False
        End If

        Dim script As String = "fddnivelformacion();"
        '
        'alert('sss')
        ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType(), "Mensaje", script, True)






    End Sub


    Function cagarSubItems(ByVal coditem As Integer) As ListItemCollection
        Dim l1 As ListItem() = {
            New ListItem("Seleccione…", "0"),
            New ListItem("SALACUNA", "1"),
            New ListItem("SALA-CUNA, GUARDERÍA U HOGAR DEL ICBF", "2"),
            New ListItem("PREKINDER", "3"),
            New ListItem("KINDER", "4"),
            New ListItem("TRANSICIÓN", "5"),
            New ListItem("PRIMERO", "6"),
            New ListItem("SEGUNDO", "7"),
            New ListItem("TERCERO", "8"),
            New ListItem("CUARTO", "9"),
            New ListItem("QUINTO", "10"),
            New ListItem("SEXTO", "11"),
            New ListItem("SEPTIMO", "12"),
            New ListItem("OCTAVO", "13"),
            New ListItem("NOVENO", "14"),
            New ListItem("DÉCIMO", "15"),
            New ListItem("ONCE", "16"),
            New ListItem("ALFABETIZACIÓN", "17"),
            New ListItem("1° SEMESTRE", "18"),
            New ListItem("2° SEMESTRE", "19"),
            New ListItem("3° SEMESTRE", "20"),
            New ListItem("4° SEMESTRE", "21"),
            New ListItem("5° SEMESTRE", "22"),
            New ListItem("6° SEMESTRE", "23"),
            New ListItem("7° SEMESTRE", "24"),
            New ListItem("8° SEMESTRE", "25"),
            New ListItem("9° SEMESTRE", "26"),
            New ListItem("10° SEMESTRE", "27"),
            New ListItem("11° SEMESTRE", "28"),
            New ListItem("12° SEMESTRE", "29"),
            New ListItem("ESPECIALIZACIÓN - ESPECIALIDAD", "30"),
            New ListItem("MAESTRÍA", "31"),
            New ListItem("DOCTORADO", "32")
                }
        Dim l As New ListItemCollection
        Select Case coditem

            Case 1
                l.Add(l1(0))
            Case 2
                l.Add(l1(0))
                'l.Add(l1(1))
                'l.Add(l1(2))
                l.Add(l1(3))
                l.Add(l1(4))
                l.Add(l1(5))
            Case 3
                l.Add(l1(0))
                l.Add(l1(6))
                l.Add(l1(7))
                l.Add(l1(8))
                l.Add(l1(9))
                l.Add(l1(10))

            Case 4
                l.Add(l1(0))
                l.Add(l1(11))
                l.Add(l1(12))
                l.Add(l1(13))
                l.Add(l1(14))
            Case 5
                l.Add(l1(0))
                l.Add(l1(15))
                l.Add(l1(16))
            Case 6
                l.Add(l1(0))
                l.Add(l1(18))
                l.Add(l1(19))
                l.Add(l1(20))
                l.Add(l1(21))
            Case 7
                l.Add(l1(0))
                l.Add(l1(18))
                l.Add(l1(19))
                l.Add(l1(20))
                l.Add(l1(21))
                l.Add(l1(22))
                l.Add(l1(23))
            Case 8
                l.Add(l1(0))
                l.Add(l1(18))
                l.Add(l1(19))
                l.Add(l1(20))
                l.Add(l1(21))
                l.Add(l1(22))
                l.Add(l1(23))
                l.Add(l1(24))
                l.Add(l1(25))
                l.Add(l1(26))
                l.Add(l1(27))
                l.Add(l1(28))
                l.Add(l1(29))
            Case 9
                l.Add(l1(0))
                l.Add(l1(30))
                l.Add(l1(31))
                l.Add(l1(32))

            Case 10

                l.Add(l1(17))

            Case 11

                l.Add(l1(2))
        End Select
        Return l
    End Function
End Class


